package day10.gec.生产者消费者模式;

import java.util.ArrayList;
import java.util.List;

/*
 * 1 消费者要消费，发出一个请求   通过一个导购员  会进行限制生产和促进生产这样一个角色
 */
public class ProductCusmerDemo {
    public static void main(String[] args) {
        //集合
        final List<String> list = new ArrayList<>();

        //获取时间
        final long pro = System.currentTimeMillis();

        //生产者
        Thread t1 = new Thread() {

            @Override
            public void run() {
                //组装产品一个数字要进行累加
                int num = 0;
                //判断  System.currentTimeMillis():系统获得的时候
                while(System.currentTimeMillis() - pro < 100) {
                    synchronized (list) {
                        //判断
                        if(list.size() > 0) {
                            //让工厂停止 生产
                            try {
                                list.wait();
                            } catch (InterruptedException e) {
                                e.printStackTrace();
                            }
                        }else {
                            //开足马力 生产
                            list.add("龙眼"+ ++num);
                            System.out.println(Thread.currentThread().getName() + "正在生产" + "龙眼" + num);
                        }
                    }
                }
            }
        };
        //生产者
        Thread t2 = new Thread() {

            @Override
            public void run() {
                //组装产品一个数字要进行累加
                int num = 0;
                //判断
                while(System.currentTimeMillis() - pro < 100) {
                    synchronized (list) {
                        //判断
                        if(list.size() == 0) {
                            //让工厂 生产
                            list.notify();//唤醒生产线程
                        }else {
                            //消费
                            list.remove("龙眼"+ ++num);
                            System.out.println(Thread.currentThread().getName() + "正在吃" + "龙眼" + num);
                        }
                    }
                }
            }
        };

        //设置名字
        t1.setName("生产者");
        t1.start();

        t2.setName("消费者");
        t2.start();
    }
}

